home *** CD-ROM | disk | FTP | other *** search
- 0 rem********************************** * tiny eprommer v 2.0 *
- 1 rem* ------------------- * * 1987 ruediger stahl *
- 2 rem* hurtenstr. 20 * * 8138 frieding-andechs *
- 3 rem* * * *
- 9 rem**********************************
- 10 :
- 20 print"[147]":poke52,48:poke56,48:poke51,0:poke55,0:poke46,46:poke45,150:clr
- 30 ifpeek(49152)=32andpeek(49400)=169then50
- 40 print"[147] tiny eprommer v2.0":print" by ruediger stahl
- 41 [153]" hurtenstr. 20":[153]" 8138 frieding-andechs
- 45 load"ma.tiny eprommer",8,1
- 50 lm=49152:dr=49296:bl=49464:bs=49514:co=49606:cl=49716:fi=49848
- 55 sys49768
- 59 rem typen
- 60 dimt$(5),al$(3)
- 61 t$(0)="2764 / 21 v "
- 62 t$(1)="27128/ 21 v "
- 63 t$(2)="27256/12.5 v"
- 64 t$(3)="8 kb /12.5 v"
- 65 t$(4)="16 kb/12.5 v"
- 66 t$(5)="32 kb/ 21 v "
- 70 al$(0)=" turbo speed "
- 71 al$(1)=" fast & secure "
- 72 al$(2)="standard 50 ms"
- 80 ei%=16
- 90 ifpeek(820)<>0thenal=int(peek(820)/16):ty=peek(820)-al*16
- 91 ifty>5thenty=0
- 92 ifal>2thenal=0
- 99 :
- 100 rem * hauptmenue
- 105 poke53280,5:poke53281,0:poke650,0:syscl
- 110 print"[153]>>> tiny eprommer v2.0 <<<";
- 120 print"----------------------------------------"
- 130 print" bitte waehlen:"
- 140 printtab(6)"'f1' = eprom brennen
- 145 [153][163]6)"'f3' = typ/allgorithmus waehlen
- 150 printtab(6)"'f5' = files/direktory
- 155 [153][163]6)"'f7' = zurueck zu basic
- 160 printtab(6)"'f2' = eprom leertest
- 170 [153][163]6)"'f4' = eprom auslesen
- 180 printtab(6)"'f6' = eprom verify
- 190 [153][163]6)"'f8' = tools
- 200 print"----------------------------------------";
- 210 print">>> "t$(ty)" mit "al$(al)" <<[157]"chr$(148)"<";
- 220 t=ty:vp=0:ift>1andt<5thenvp=1
- 230 ift>2thent=t-3
- 250 rem *** auswahl
- 260 geta$:ifa$=""then260
- 270 a=asc(a$):ifa<133ora>140then260
- 280 ona-132gosub 1000,2000,3000,4000,5000,6000,7000,8000
- 390 goto100
- 1000 rem *** brennen
- 1010 syscl
- 1015 print" bitte waehlen:
- 1020 [153][163]6)"'f1' = zurueck
- 1025 printtab(6)"'f3' = speicherinhalt brennen
- 1030 [153][163]6)"'f5' = einzelbyteprogrammierung
- 1050 geta$:ifa$=""then1050
- 1055 a=asc(a$):ifa<133ora>138then1050
- 1060 syscl
- 1065 ona-132goto 1100,1200,1300
- 1100 return
- 1200 syscl:print"speicherinhalt in eprom brennen:"
- 1205 d=8192*2^t-1:gosub1500:gosub1600
- 1206 ife1-a1<>e2-a2then1200
- 1210 print"eprom-typ: ";t$(ty)
- 1220 print"allgorithmus:";al$(al)
- 1225 gosub50050:ifa$="n"then1200
- 1230 syscl:print" *** eprom wird gebrannt ***"
- 1240 sys49920,al,vp,t,a1,a2,e2
- 1245 ifpeek(2)>0thengosub50700
- 1250 gosub50010
- 1260 return
- 1300 syscl:print"ein byte programmieren:"
- 1305 print"epromadresse (hex) ? 0000";:a$="0000":gosub50120
- 1310 gosub50400:a2=a:ifa<0ora>8192*2^t-1then1300
- 1315 print"wert (hex) ? 00";:a$="00":gosub50120:a$="00"+a$
- 1320 gosub50400:ifa<0ora>255then1300
- 1340 gosub50050:ifa$="n"then1300
- 1350 a1=53247:pokea1,a:e1=a1:e2=a2
- 1360 print"eprom-typ: ";t$(ty)
- 1365 print"allgorithmus:";al$(al)
- 1370 gosub50050:ifa$="n"then1300
- 1375 gosub1230
- 1395 goto1000
- 1500 print"adressen im computer (hex):"
- 1505 a$="3000":print"anfangsadresse ? "a$;:gosub50120
- 1510 gosub50400:gosub50600
- 1511 a1=a:ifa=0thenprint"[145][145][145]":goto1505
- 1515 a=a1+d:gosub50600:ifa=0thena=49151
- 1516 gosub50500
- 1520 print"endadresse ? "a$;:gosub50120
- 1530 gosub50400:gosub50600
- 1531 ifa1<49152anda>57334thena=0
- 1540 e1=a:ifa=0ora<a1thenprint"[145][145][145][145]":goto1505
- 1545 d=a-a1:return
- 1600 print"adressen im eprom (hex):"
- 1605 a$="0000":print"anfangsadresse ? "a$;:gosub50120
- 1610 gosub50400:a2=a
- 1611 ifa>8192*2^t-1ora<0thenprint"[145][145][145]":goto1605
- 1615 a=a2+d:ifa>8192*2^t-1thena=8192*2^t-1
- 1618 gosub50500
- 1620 print"endadresse ? "a$;:gosub50120
- 1630 gosub50400:e2=a
- 1635 ifa>8192*2^t-1thena=a2-1
- 1640 e2=a:ifa<a2thenprint"[145][145][145][145]":goto1505
- 1645 d=a-a2:return
- 2000 rem *** typ/allgorithmus
- 2010 syscl:t=ty
- 2015 print" epromtyp und allgorithmus waehlen:"
- 2020 printtab(6)"'f1' = zurueck
- 2025 [153][163]6)"mit cursertasten auswahlen
- 2030 printtab(6)"mit return abspeichern
- 2050 [153]"";
- 2060 [129]a[178]0[164]5:[139]t[178]a[167][153]"";
- 2065 [139]a[177]2[167][153]" spezaltypen: "t$(a)" ":[137]2075
- 2070 [153]" ";t$(a);" "
- 2075 [130]
- 2100 [161]a$
- 2105 [139]a$[178]"input"[167]2300
- 2106 [139]a$[178][199](13)[167]2200
- 2110 [139]a$[178]"on"[167]t[178]t[171]1:[139]t[179]0[167]t[178]5
- 2115 [139]a$[178]""[167]t[178]t[170]1:[139]t[177]5[167]t[178]0
- 2120 [137]2050
- 2200 [153]"";
- 2210 [129]a[178]0[164]2
- 2215 [139]al[178]a[167][153]"";
- 2220 [153]" ";al$(a);" "
- 2225 [130]
- 2250 [161]a$
- 2255 [139]a$[178]"input"[176]a$[178][199](13)[167]2300
- 2265 [139]a$[178]"on"[167]al[178]al[171]1:[139]al[179]0[167]al[178]2
- 2270 [139]a$[178]""[167]al[178]al[170]1:[139]al[177]2[167]al[178]0
- 2290 [137]2200
- 2300 [151]820,t[170]al[172]16:ty[178]t:[142]
- 3000 [143] *** files/direktory
- 3010 [158]cl
- 3015 [153]" bitte waehlen:"
- 3020 [153][163]6)"'f1' = zurueck
- 3025 printtab(6)"'f3' = direktory
- 3030 [153][163]6)"'f5' = programm laden
- 3035 printtab(6)"'f7' = programm saven [160]
- 3040 [153][163]6)"'f2' = floppy befehl close
- 3045 printtab(6)"'f4' = fehlerkanal [160]
- 3050 [161]a$:[139]a$[178]""[167]3050
- 3055 a[178][198](a$):[139]a[179]133[176]a[177]138[167]3050
- 3060 [158]cl
- 3065 [145]a[171]132[137] 3100,3200,3300,3400,3500,3600
- 3100 [142]
- 3200 :
- 3205 [158]dr
- 3210 [141]50010
- 3220 [137]3000
- 3300 [158]cl
- 3305 [153]"load programm:":[141]3310:[137]3350
- 3310 [153]"filename ? ";
- 3315 [141]50100:n$[178]a$:[139]n$[178]""[167]3000
- 3316 [139]n$[178]""[167][153]"ononon":[137]3310
- 3320 a$[178]"8":[153]"geraeteadresse ? "a$;
- 3325 [141]50120:g[178][197](a$)
- 3326 [139]g[179]1[176]g[177]15[167][153]"ononon":[137]3320
- 3330 [142]
- 3335 :
- 3350 [139]n$[178]""[167][142]
- 3351 [139]n$[178]"$"[167]3200
- 3354 [153]"unzulaessige bereiche:"
- 3355 [153]" $0000-$2fff und $c000-$dfff"
- 3360 a$[178]"3000":[153]"anfangsadresse (hex) ? ";a$;
- 3365 [141]50120:[141]50400
- 3370 [141]50600:[139]a[178]0[167]3300
- 3380 [141]50050:[139]a$[178]"n"[167][158]cl:[137]3300
- 3390 [158]bl,n$,g,a
- 3391 [139]st[179][177]64[167][153]" i/o-error":[137]3394
- 3392 a[178][194](781)[170][194](782)[172]256[171]1:[141]50500:[153]" programmende: $";a$
- 3394 [141]50010
- 3395 [139][194](49152)[178]32[175][194](49400)[178]169[167]3399
- 3396 [153]" programm zu lang
- 3397 print" epromer diskette einlegen":gosub50010:load"ma.tiny epromer",8,1
- 3399 goto3000
- 3400 syscl
- 3405 print"save programm:":gosub3310
- 3406 ifn$=""then3000
- 3410 print"anfangsadresse (hex) ? ";
- 3420 gosub50100:gosub50400
- 3430 ifa=-1then3400
- 3435 b=a
- 3440 print"endadresse (hex) ? ";
- 3445 gosub50100:gosub50400
- 3450 a=a+1:ifa>65535thenprint"letztes byte geht verlohren":a=65535
- 3460 gosub50050:ifa$="n"thensyscl:goto3400
- 3470 sysbs,n$,g,b,a
- 3471 ifst<>0thenprint" i/o-error":gosub50010
- 3475 goto3000
- 3500 :
- 3505 print"floppy-befehl:";
- 3510 ei%=25:gosub50100
- 3520 open1,8,15,a$:close1
- 3600 :
- 3605 open1,8,15:print"disk-status: ";
- 3610 get#1,a$:printa$;:if(st and64)=0goto3610
- 3615 close1:gosub50010:goto3000
- 3620 :
- 4000 rem *** basic
- 4005 syscl:print"programm benenden:
- 4010 [141]50050:[139]a$[178]"n"[167][142]
- 4020 [158]49816:[128]:[138]
- 5000 [143] *** eprom leertest
- 5010 [158]cl:[153]"eprom leertest: (vergleich mit $ff)
- 5020 gosub50050:ifa$="n"thenreturn
- 5030 sys49929,t,0,0,8192*2^t
- 5035 ifpeek(2)=15thenprint" eprom nicht geloescht !":gosub50700
- 5036 ifpeek(2)=0thenprint" eprom geloescht !"
- 5040 gosub50010:return
- 6000 rem *** eprom auslesen
- 6010 syscl
- 6015 print" bitte waehlen:
- 6020 [153][163]6)"'f1' = zurueck
- 6025 printtab(6)"'f3' = eprominhalt in com-
- 6026 [153][163]13)"puter einlesen
- 6030 printtab(6)"'f5' = einzelbyteauslese
- 6050 [161]a$:[139]a$[178]""[167]6050
- 6055 a[178][198](a$):[139]a[179]133[176]a[177]135[167]6050
- 6060 [158]cl
- 6070 [145]a[171]132[137]6100,6200,6300
- 6100 [142]
- 6200 [158]cl:[153]"eprominhalt in computer einlesen:
- 6205 d=8192*2^t-1:gosub1600:gosub1500
- 6206 ife1-a1<>e2-a2then6200
- 6225 gosub50050:ifa$="n"then6200
- 6230 sys49923,t,a1,a2,e2
- 6240 gosub50010:return
- 6300 syscl:print"ein byte auslesen:
- 6305 [153]"epromadresse (hex) ? 0000_cmd";:a$[178]"0000":[141]50120
- 6310 [141]50400:a2[178]a:[139]a[179]0[176]a[177]8192[172]2[174]t[171]1[167]6300
- 6340 [141]50050:[139]a$[178]"n"[167]6300
- 6350 a1[178]53247:[158]49923,t,a1,a2,a2
- 6355 a[178][194](a1):[141]50500:[153]"wert:";[194](a1);"= $";a$
- 6360 [141]50010:[137]6000
- 7000 [143] *** eprom verify
- 7100 [158]cl:[153]"eprominhalt mit computer vergleichen:
- 7105 d=8192*2^t-1:gosub1600:gosub1500
- 7106 ife1-a1<>e2-a2then7100
- 7125 gosub50050:ifa$="n"then7100
- 7130 sys49926,t,a1,a2,e2
- 7135 ifpeek(2)=15thenprint" verify error !":gosub50700:goto7140
- 7136 print" eprominhalt correct !"
- 7140 gosub50010:return
- 8000 rem *** tools
- 8010 syscl
- 8015 print" bitte waehlen:"
- 8020 printtab(6)"'f1' = zurueck
- 8025 [153][163]6)"'f3' = modulgenerator
- 8030 printtab(6)"'f5' = tiny-mon
- 8035 [153][163]6)"'f7' = speicherber. verschieben
- 8040 printtab(6)"'f2' = speicherber. fuellen
- 8050 [161]a$:[139]a$[178]""[167]8050
- 8055 a[178][198](a$):[139]a[179]133[176]a[177]137[167]8050
- 8060 [158]cl
- 8065 [145]a[171]132[137] 8100,8200,8300,8110,8120
- 8100 [142]
- 8110 [141]8450:[137]8000
- 8120 [141]8600:[137]8000
- 8200 [158]cl:[153]" modulstartgenerator wird nachgeladen.
- 8210 gosub50050:ifa$="n"thenreturn
- 8220 sys49816
- 8230 load"modulgen. v2.0",8
- 8300 syscl:poke650,128:ad=12288:print" tiny-mon:
- 8305 [153]" 'f1' = zurueck
- 8308 print" 'f3' = transver
- 8309 [153]" 'f4' = speicherbereich fuellen
- 8310 print" 'f5'/'f7';'f6'/'f8';crsr = scroll
- 8315 [153]" return = wert abspeichern
- 8350 syslm,ad
- 8360 print"[145][145][145][145]_[157][157][157]";
- 8370 geta$:ifa$=""then8370
- 8371 ifa$="[133]"thenpoke650,0:return
- 8372 ifasc(a$)>47andasc(a$)<58then8395
- 8373 ifasc(a$)>64andasc(a$)<71then8395
- 8374 ifasc(a$)=13then8400
- 8378 ifa$="[134]"thengosub8450:goto8300
- 8379 ifa$="[138]"thengosub8600:goto8300
- 8380 ifa$="[135]"thenad=ad-80
- 8381 ifa$="[136]"thenad=ad+80
- 8382 ifa$="[139]"thenad=ad-1024
- 8383 ifa$="[140]"thenad=ad+1024
- 8384 ifa$="[145]"thenad=ad-8
- 8385 ifa$=""thenad=ad+8
- 8386 ifa$=""thenad=ad+1
- 8387 ifa$="[157]"thenad=ad-1
- 8388 ifad<0thenad=65535
- 8389 ifad>65535thenad=0
- 8390 w$="":goto8350
- 8395 ifw$=""thenw$=" "
- 8398 w$=w$+a$:iflen(w$)>2thenw$=right$(w$,2)
- 8399 printw$"[157][157]";:goto8370
- 8400 ifw$=""then8410
- 8401 ifleft$(w$,1)=" "thenw$="0"+right$(w$,1)
- 8405 a$="00"+w$:gosub50400:pokead+16,a
- 8410 ad=ad+1:w$="":goto8350
- 8420 :
- 8450 rem transver
- 8455 syscl
- 8460 print" transver (hex):"
- 8465 print" von: ";:gosub50100:ifa$=""thenreturn
- 8470 gosub50400:a1=a:ifa<0then8450
- 8475 print" bis: ";:gosub50100:ifa$=""thenreturn
- 8480 gosub50400:e1=a:ifa<0then8450
- 8485 print" nach:";:gosub50100:ifa$=""thenreturn
- 8490 gosub50400:a2=a:ifa<0then8450
- 8500 a$="06":print" speicherkonfiguration (auch hex): ";a$;:ei%=2
- 8501 gosub50120:ifa$=""thenreturn
- 8505 a$="00"+a$:gosub50400:ifa<0then84505
- 8540 e1=e1+1:ife1>65535thene1=e1-65536
- 8550 sysco,a1,e1,a2,a
- 8560 return
- 8600 rem fill
- 8605 syscl
- 8610 print" speicherbereich fuellen (hex):"
- 8615 print" (greift immer auf ram zu !)
- 8620 [153]" von: ";:[141]50100:[139]a$[178]""[167][142]
- 8630 [141]50400:a1[178]a:[139]a[179]0[167]8600
- 8640 [153]" bis: ";:[141]50100:[139]a$[178]""[167][142]
- 8650 [141]50400:e1[178]a:[139]a[179]0[167]8600
- 8660 a$[178]"ff":[153]" wert:";a$;:ei%[178]2
- 8665 [141]50120:[139]a$[178]""[167][142]
- 8670 a$[178]"00"[170]a$:[141]50400:[139]a[179]0[167]8600
- 8680 e1[178]e1[170]1:[139]e1[177]65535[167]e1[178]e1[171]65536
- 8690 [158]fi,a1,e1,a
- 8695 [142]
- 8700 :
- 50000 [143] *** unterroutinen
- 50010 [143] auf tastendruck warten
- 50020 [151]198,0
- 50025 [139][194](214)[177]21[167][153]""
- 50030 [153]:[153]" t a s t e d r u e c k e n "
- 50045 [146]198,1,0:[151]198,0:[142]
- 50050 [143] eingabe ok ?
- 50060 [151]198,0
- 50070 [153]:[153]" a l l e s oclosek aclosey (j/n) ? wait"
- 50075 [146]198,1,0:[161]a$
- 50080 [139]a$[179][177]"j"[175]a$[179][177]"n"[167]50075
- 50085 [142]
- 50100 [143] input von 16 zeichen
- 50110 a$[178]"":
- 50120 [153]"_cmd";:[161]b$:[139]b$[179][177]""[167]50130
- 50122 [129]a[178]0[164]80:[130]:[153]"_waitcmd";
- 50125 [161]b$:[139]b$[179][177]""[167]50130
- 50127 [129]a[178]0[164]80:[130]:[137]50120
- 50130 [139][198](b$)[178]13[167][153]"_":ei%[178]16:[142]
- 50140 [139][198](b$)[177]31[175][198](b$)[179]128[167]50200
- 50150 [139][198](b$)[177]161[167]50200
- 50160 [139]b$[179][177][199](20)[175]b$[179][177]"cmd"[167]50120
- 50170 [139][195](a$)[179]1[167]50120
- 50180 a$[178][200](a$,[195](a$)[171]1)
- 50190 [153]" cmdcmd_cmd";
- 50195 [137]50120
- 50200 [139][195](a$)[179]ei%[167]50300
- 50210 [153]" cmdcmd";
- 50220 a$[178][200](a$,[195](a$)[171]1)
- 50300 a$[178]a$[170]b$
- 50310 [153]b$;"_cmd";
- 50350 [137]50120
- 50400 [143] hex in dez (b$ in b)
- 50410 a[178][171]1:[139][195](a$)[177]4[176][195](a$)[179]1[167][142]
- 50420 [129]x[178]1[164][195](a$)
- 50430 z[178][198]([202](a$,x,1))
- 50440 [139]47[179]z[175]z[179]58[167]z[178]z[171]48:[137]50470
- 50450 [139]z[179]65[176]z[177]71[167]a[178][171]1:x[178]4:[130]:[142]
- 50460 z[178]z[171]55
- 50470 a[178]a[170]z[172]16[174]([195](a$)[171]x)
- 50490 [130]:a[178]a[170]1:[142]
- 50500 [143] dez in hex (a in a$)
- 50510 a$[178]"":[129]x[178]3[164]0[169][171]1:w[178][181](a[173]16[174]x)
- 50520 a[178]a[171]w[172]16[174]x:[139]w[177]9[167]w[178]w[170]7
- 50530 a$[178]a$[170][199](w[170]48)
- 50540 [130]:[142]
- 50600 [143] a zulaessig ?
- 50610 [139]a[177]49151[175]a[179]57344[167]a[178]0
- 50620 [139]a[179]3[172]4096[176]a[177]65535[167]a[178]0
- 50640 [142]
- 50700 [143] aktuelle adresse
- 50710 a[178][194](169)[170][194](170)[172]256:[153]
- 50720 [153]" epromadresse:";a;:[141]50500:[153]" = $";a$
- 50750 [142]
- 60000 :
-